Telegram Group & Telegram Channel
Шаринг типов между сервером и клиентом

Вчера в одном чатике задали вопрос на эту тему:> Вот смотрите, предположим, есть backend на питоне, есть UI на Angular. Оба используют контрактные (согласованные) структуры - бэк отдавая, фронт получая. Как мне подружить эти схемы, что б можно было вести только в одном месте ?

Тут у нас какие варианты, давайте по рассуждаем.

Первый идеальный. У нас на беке и фронте TS, поэтому проблемы как таковой и нет. Честно говоря, мне настолько понравилось последнее время делать проекты в этом стиле, что я бы в будущем так все проекты и делал. Особенно учитывая наличие великолепной drizzle orm в node.js (просто вау)

Второй энтерпрайзный. Описываем отдельную спеку в https://typespec.io/ затем из нее генерим не только типы, но и sdk для работы. Но такой подход тяжелее и больше используется для взаимодействия сервисов друг с другом, чем для клиент-серверного взаимодействия где это может быть оверкилом. Ну и на беке все равно будет связка “свои модели” - “сгенерированные dto” - “маппинги”, то есть рутины все равно достаточно.

Третий практичный. В этом варианте мы генерируем TS типы из наших моделей или dto (что правильнее). Как правило для бекенд фреймворков есть готовые либы https://github.com/skryukov/typelizer Если нет, то можно попросить chatgpt написать конвертер. Этот вариант не без изъянов, так как типы не мапятся один в один, то иногда в беке надо явно прописывать фронтендовые типы как строки. В https://code-basics.com выбран именно этот вариант.

Четвертый апишный. Генераторы на уровне описания самого апи в беке. То есть пишем апишку, добавляем мету и из нее генерим спеку, дальше из этой спеки можно уже типы для фронта https://drf-yasg.readthedocs.io/en/stable/. Возможно наиболее популярный путь, но такое точно не сработает с подходом аля inertia.js.

Четвертый рукпошка. Просто описываем типы независимо от бека и страдаем. Как ни странно, этот вариант не на последнем месте по популярности.

p.s. А как делаете вы и нравится ли вам такой подход?

Ссылки: Телеграм | Youtube | VK



tg-me.com/orgprog/294
Create:
Last Update:

Шаринг типов между сервером и клиентом

Вчера в одном чатике задали вопрос на эту тему:> Вот смотрите, предположим, есть backend на питоне, есть UI на Angular. Оба используют контрактные (согласованные) структуры - бэк отдавая, фронт получая. Как мне подружить эти схемы, что б можно было вести только в одном месте ?

Тут у нас какие варианты, давайте по рассуждаем.

Первый идеальный. У нас на беке и фронте TS, поэтому проблемы как таковой и нет. Честно говоря, мне настолько понравилось последнее время делать проекты в этом стиле, что я бы в будущем так все проекты и делал. Особенно учитывая наличие великолепной drizzle orm в node.js (просто вау)

Второй энтерпрайзный. Описываем отдельную спеку в https://typespec.io/ затем из нее генерим не только типы, но и sdk для работы. Но такой подход тяжелее и больше используется для взаимодействия сервисов друг с другом, чем для клиент-серверного взаимодействия где это может быть оверкилом. Ну и на беке все равно будет связка “свои модели” - “сгенерированные dto” - “маппинги”, то есть рутины все равно достаточно.

Третий практичный. В этом варианте мы генерируем TS типы из наших моделей или dto (что правильнее). Как правило для бекенд фреймворков есть готовые либы https://github.com/skryukov/typelizer Если нет, то можно попросить chatgpt написать конвертер. Этот вариант не без изъянов, так как типы не мапятся один в один, то иногда в беке надо явно прописывать фронтендовые типы как строки. В https://code-basics.com выбран именно этот вариант.

Четвертый апишный. Генераторы на уровне описания самого апи в беке. То есть пишем апишку, добавляем мету и из нее генерим спеку, дальше из этой спеки можно уже типы для фронта https://drf-yasg.readthedocs.io/en/stable/. Возможно наиболее популярный путь, но такое точно не сработает с подходом аля inertia.js.

Четвертый рукпошка. Просто описываем типы независимо от бека и страдаем. Как ни странно, этот вариант не на последнем месте по популярности.

p.s. А как делаете вы и нравится ли вам такой подход?

Ссылки: Телеграм | Youtube | VK

BY Организованное программирование | Кирилл Мокевнин


Warning: Undefined variable $i in /var/www/tg-me/post.php on line 283

Share with your friend now:
tg-me.com/orgprog/294

View MORE
Open in Telegram


Организованное программирование | Кирилл Мокевнин Telegram | DID YOU KNOW?

Date: |

A project of our size needs at least a few hundred million dollars per year to keep going,” Mr. Durov wrote in his public channel on Telegram late last year. “While doing that, we will remain independent and stay true to our values, redefining how a tech company should operate.

Telegram is riding high, adding tens of million of users this year. Now the bill is coming due.Telegram is one of the few significant social-media challengers to Facebook Inc., FB -1.90% on a trajectory toward one billion users active each month by the end of 2022, up from roughly 550 million today.

Организованное программирование | Кирилл Мокевнин from jp


Telegram Организованное программирование | Кирилл Мокевнин
FROM USA